package com.szxy.miaosha.controller;

import com.szxy.miaosha.domain.MiaoshaUser;
import com.szxy.miaosha.service.GoodsService;
import com.szxy.miaosha.service.MiaoShaUserService;
import com.szxy.miaosha.utils.Constant;
import com.szxy.miaosha.vo.GoodsVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @Author: zwz
 * @Date:2020/9/6 23:10
 * @Description:com.szxy.miaosha.controller
 * @Version:1.0 商品服务控制器
 * 针对商品服务， 每次请求，都要请求 Redis 服务器，拿到对应的 token ，判断用户是否过期或者存在
 * 这样的操作，是重复性，代码看起来不是很清爽
 **/
@Controller
@RequestMapping("/goods")
public class GoodsController {

    @Autowired
    private MiaoShaUserService miaoShaUserService;
    @Autowired
    private GoodsService goodsService;

    /**
     * 前往商品列表 （改造后）
     * miaoshaUser 对象 MiaoShaUserArgumentResolver 注入
     *
     * @return
     */
    @GetMapping("/to_list")
    public String toPage(Model model, MiaoshaUser miaoshaUser) {
        model.addAttribute("user", miaoshaUser);
        // 商品列表
        List<GoodsVo> goodsVoList = goodsService.listGoods();
        model.addAttribute("goodsList", goodsVoList);
        return "goods_list";
    }


    /**
     * 前往商品列表 (改造前)
     *
     * @return
     */
//    @GetMapping("/to_list")
//    public String toPage(
//            @CookieValue(value = Constant.COOKIES_TOKEN_KEY, required = false) String cookieToken,
//            @RequestParam(value = Constant.COOKIES_TOKEN_KEY, required = false) String paramToken,
//            Model model, HttpServletResponse resp) {
//        // 若没有 token ，则返回登录界面
//        if (StringUtils.isEmpty(cookieToken) && StringUtils.isEmpty(paramToken)) {
//            return "login";
//        }
//        String token = paramToken != null ? paramToken : cookieToken;
//        MiaoshaUser miaoshaUser = miaoShaUserService.getByToken(resp, token);
//        if (miaoshaUser == null) {
//            return "login";
//        }
//        model.addAttribute("user", miaoshaUser);
//        return "goods_list";
//    }


    /**
     * 去往详情页
     *
     * @param model
     * @return
     */
    @GetMapping("/to_detail/{goodsId}")
    public String toDetail(@PathVariable Long goodsId, Model model, MiaoshaUser miaoshaUser) {
        // 若没有 token ，则返回登录界面
        model.addAttribute("user", miaoshaUser);
        goodsService.showDetail(model, goodsId);
        return "goods_detail";
    }

}
